package modelo;

import java.awt.Point;
import java.util.Collections;
import java.util.Random;
import java.util.concurrent.CopyOnWriteArrayList;

public class EstrategiaNivelUno extends EstrategiaEnemiga{

	public EstrategiaNivelUno(Mapa mapa, Bombita objetivo, Enemigo enemigo){
		
		this.mapa = mapa;
		this.objetivo = objetivo;
		this.enemigo = enemigo;
		
	}
	
	@Override
	public Point calcularMovimiento() {

		Point posActual = this.enemigo.getPosicion();
		Arma arma = this.enemigo.obtenerArma();
		CopyOnWriteArrayList<Point> posibles = this.posicionesPosibles();
		
		// Si esta cerca de la ultima bomba detonada, se aleja
		if(this.posicionUltimaDetonacion != null){
			if(this.posicionUltimaDetonacion.distance(posActual) <= arma.getOndaExpansiva()){
				return this.posAMayorDistancia(posibles, this.posicionUltimaDetonacion);
			}	
		}
		
		return this.posAMenorDistancia(posibles, this.objetivo.getPosicion());
	}

	
	@Override
	public boolean decidirSiDispara() {
		Random rnd = new Random();
		return rnd.nextBoolean();
	}


	@Override
	public Point calcularPosicionDisparo() {
		
		CopyOnWriteArrayList<Point> posiblesDisparos = this.posicionesDentroDeAlcance();
		
		Collections.shuffle(posiblesDisparos);
		return posiblesDisparos.get(0);
	}

	
}
